package co.edu.udea.quejas.DAO.hibernate;

import org.hibernate.HibernateException;
import org.hibernate.Session;
import org.hibernate.Transaction;
import org.springframework.orm.hibernate3.support.HibernateDaoSupport;

import co.edu.udea.quejas.DAO.UsuarioDAO;
import co.edu.udea.quejas.DTO.Usuario;
import co.edu.udea.quejas.exception.IWDaoException;

public class UsuarioDAOHibernate extends HibernateDaoSupport implements UsuarioDAO {

	@Override
	public Usuario insertar(Usuario usuario) throws IWDaoException {
		Transaction tx=null;
		Session session=null;
		try{
			session= (Session) getSession();			
			tx= session.beginTransaction();
			session.save(usuario);
			tx.commit();
			
			}catch(HibernateException e){
				throw new IWDaoException(e);
			}finally {
			session.close();
			
		}
		return usuario;
	}

	@Override
	public Usuario modificar(Usuario usuario) throws IWDaoException {
		Transaction tx=null;
		Session session=null;
		try{
			session= (Session) getSession();			
			tx= session.beginTransaction();
			session.update(usuario);
			tx.commit();
			
			}catch(HibernateException e){
				throw new IWDaoException(e);
			}finally {
			session.close();
			
		}
		return usuario;
	}

	@Override
	public void eliminar(Usuario usuario) throws IWDaoException {
		Transaction tx=null;
		Session session=null;
		try{
			session= (Session) getSession();			
			tx= session.beginTransaction();
			usuario.setEstado(false);
			session.update(usuario);
			tx.commit();
			
			}catch(HibernateException e){
				throw new IWDaoException(e);
			}finally {
			session.close();
			
		}

	}

	@Override
	public Usuario obtener(String nomUsuario) throws IWDaoException {
		Usuario usuario = null;
		Session session =null;
		try{
		session= (Session) getSession();
		usuario= (Usuario) session.get(Usuario.class, nomUsuario);	
		
		}catch(HibernateException e){
			throw new IWDaoException(e);
		}finally{
			session.close();
		}
		return usuario;
	}

}
